﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace Biblioteca.Logica_Negocio.Domain_Model
{
    [Table("Reservas")]
    public class Reserva
    {

        public enum EstadoReserva { Pendiente = 1, Concretado = 2, Cancelado = 3 }

        public Reserva()
        {
        }


        public Reserva(Socio socio, Material material, int cantDias)
        {
            this.Socio = socio;
            this.Material = material;
            this.Fecha = DateTime.Today;
            this.CantDias = cantDias;
            this.Estado = EstadoReserva.Pendiente;
        }

        public int Id { get; set; }

        public virtual Socio Socio { get; set; }

        public virtual Material Material { get; set; }

        public virtual DateTime Fecha { get; set; }

        [Range(1,30)]
        public int CantDias { get; set; }

        public virtual int EstadoInterno { get; set; }

        [NotMapped]
        public virtual EstadoReserva Estado
                {
                    get { return (EstadoReserva)EstadoInterno; }
                    set { EstadoInterno = (int)value; } 
                }



        public virtual void Cancelar()
        {
            if (this.Estado == EstadoReserva.Pendiente)
            {
                this.Estado = EstadoReserva.Cancelado;
                this.Fecha = DateTime.Today;
            }
        }

        public void Concretar()
        {
            this.Estado = EstadoReserva.Concretado;
            this.Fecha = DateTime.Today;
            //prestamo.AvisarASocio();
        }

        public bool EstaPendiente() {
            return (this.Estado == EstadoReserva.Pendiente);
        }
    }
}
